package com.ionehe.group.common.notify.message.consumer;


import com.ionehe.group.common.notify.message.listener.MessageOrderListener;

/**
 * Copyright (c) 2021 ionehe.com
 * Date: 2021/4/21
 * Time: 1:19 下午
 *
 * @author 2021年 <a href="mailto:a@ionehe.com">秀</a>
 * 【消费者(顺序消息)】
 */
public interface OrderConsumer {
    /**
     * 启动
     */
    void start();

    /**
     * 关闭
     */
    void shutdown();

    /**
     * 订阅
     *
     * @param topic         主题
     * @param subExpression topic对应的tag
     * @param listener      顺序消息监听器
     */
    void subscribe(String topic, String subExpression, MessageOrderListener listener);

    /**
     * 是否已启动
     *
     * @return 是或否
     */
    boolean isStarted();

    /**
     * 是否已关闭
     *
     * @return 是或否
     */
    boolean isClosed();
}